/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import Model.PresaNowakBangan;
import DAO.banco.ConFactory;
import java.util.ArrayList;
/**
 *
 * @author Ricardo
 */
public class DaoPresaNowakBangan extends DAO{

   private Connection con;
   private Statement comando;


   private void conectar() {
      try {
         con = ConFactory.conexao();
         comando = con.createStatement();
         System.out.println("Conectado!");
      } catch (ClassCastException e) {
         imprimeErro("Erro ao carregar o driver", e.getMessage());
      } catch (SQLException e) {
         imprimeErro("Erro ao conectar", e.getMessage());
      }
   }



  private void fechar() {
      try {
         comando.close();
         con.close();
         System.out.println("Conexão fechada com sucesso");
      } catch (SQLException e) {
         imprimeErro("Erro ao fechar conexão", e.getMessage());
      }
   }

   public ArrayList<PresaNowakBangan> retornaTodasPresasNowakBangan() {
       conectar();
       ArrayList<PresaNowakBangan> resultado = new ArrayList<PresaNowakBangan>();
       ResultSet result;
       try{
           result = comando.executeQuery("SELECT * FROM presa");
           while(result.next()){
               PresaNowakBangan presa = new PresaNowakBangan();
               presa.setIdentificador(Integer.parseInt(result.getString("idpresa")));
               presa.setNome(result.getString("nome"));
               presa.setDescricao(result.getString("descricao"));
               presa.setPopulacaoInicial(Float.parseFloat(result.getString("populacaoInicial")));
               presa.setPopulacaoInfectada(Float.parseFloat(result.getString("populacaoInfectada")));
               resultado.add(presa);
           }
           return resultado;
       }catch(SQLException e){
           imprimeErro("Não há dados na base!", e.getMessage());
           return null;
       }
   }

   public PresaNowakBangan retornaUmaPresa(int indentificador){
       conectar();
       ResultSet resultSet;
       try{
           resultSet = comando.executeQuery("SELECT * FROM presa WHERE idpresa ="+indentificador+";");
           PresaNowakBangan presa = new PresaNowakBangan();
           presa.setIdentificador(Integer.parseInt(resultSet.getString("idpresa")));
           presa.setNome(resultSet.getString("nome"));
           presa.setDescricao(resultSet.getString("descricao"));
           presa.setPopulacaoInicial(Float.parseFloat(resultSet.getString("populacaoInicial")));
           presa.setPopulacaoInfectada(Float.parseFloat(resultSet.getString("populacaoInfectada")));

           return presa;
       }catch(SQLException e){
           imprimeErro("Não há dados na base!", e.getMessage());
           return null;
       }
   }

   public void apagar(int identificador){
       conectar();
       try {
           comando.executeUpdate("DELETE FROM presa WHERE idpresa ="+identificador+";");
       } catch (SQLException e) {
           imprimeErro("Não há dados na base!", e.getMessage());
       }finally{
           fechar();
       }
   }

   public void atualiza(PresaNowakBangan presa){
       conectar();
       String query = "UPDATE presa "+
              "SET "
              +"nome =" + presa.getNome()+", "
              +"descriao =" + presa.getDescricao()+", "
              +"populacaoInicial =" + presa.getPopulacaoInicial()+", "
              +"populacaoInfectada =" + presa.getPopulacaoInfectada()
              +" WHERE "
              +"idpresa =" + presa.getIdentificador() + ";";
       try {
           comando.executeUpdate(query);
       } catch (SQLException e) {
           imprimeErro("Não há dados na base!", e.getMessage());
       }finally{
           fechar();
       }
   }
}
